package com.ruoyi.system.service.impl;

import java.util.Date;
import java.util.List;

import com.ruoyi.common.annotation.AutoFill;
import com.ruoyi.common.enums.AutoFillType;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.BasicSiteType;
import com.ruoyi.system.mapper.BasicSiteTypeMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.BasicSiteInfoMapper;
import com.ruoyi.system.domain.BasicSiteInfo;
import com.ruoyi.system.service.IBasicSiteInfoService;

/**
 * 站点信息;Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-03-02
 */
@Service
public class BasicSiteInfoServiceImpl implements IBasicSiteInfoService 
{
    @Autowired
    private BasicSiteInfoMapper basicSiteInfoMapper;

    @Autowired
    private BasicSiteTypeMapper basicSiteTypeMapper;

    /**
     * 查询站点信息;
     * 
     * @param siteId 站点信息;主键
     * @return 站点信息;
     */
    @Override
    public BasicSiteInfo selectBasicSiteInfoBySiteId(Long siteId)
    {
        return basicSiteInfoMapper.selectBasicSiteInfoBySiteId(siteId);
    }

    /**
     * 查询站点信息;列表
     * 
     * @param basicSiteInfo 站点信息;
     * @return 站点信息;
     */
    @Override
    public List<BasicSiteInfo> selectBasicSiteInfoList(BasicSiteInfo basicSiteInfo)
    {
        return basicSiteInfoMapper.selectBasicSiteInfoList(basicSiteInfo);
    }

    /**
     * 新增站点信息;
     * 
     * @param basicSiteInfo 站点信息;
     * @return 结果
     */
    @AutoFill(operation = AutoFillType.INSERT)
    @Override
    public int insertBasicSiteInfo(BasicSiteInfo basicSiteInfo)
    {

        if(basicSiteInfo.getSiteType() == null) throw new BaseException("站点类型不能为空");
        BasicSiteType basicSiteType = basicSiteTypeMapper.selectBasicSiteTypeBySiteTypeId(Long.parseLong(basicSiteInfo.getSiteType()));
        if(basicSiteType == null) throw new BaseException(StringUtils.format("站点类型【{}】不存在", basicSiteInfo.getSiteType()));
        if(!"启用".equals(basicSiteType.getSiteTypeStatus())) throw new BaseException(StringUtils.format("站点类型【{}】已禁用", basicSiteInfo.getSiteType()));


        return basicSiteInfoMapper.insertBasicSiteInfo(basicSiteInfo);
    }

    /**
     * 修改站点信息;
     * 
     * @param basicSiteInfo 站点信息;
     * @return 结果
     */
    @AutoFill(operation = AutoFillType.UPDATE)
    @Override
    public int updateBasicSiteInfo(BasicSiteInfo basicSiteInfo)
    {
        return basicSiteInfoMapper.updateBasicSiteInfo(basicSiteInfo);
    }

    /**
     * 批量删除站点信息;
     * 
     * @param siteIds 需要删除的站点信息;主键
     * @return 结果
     */
    @Override
    public int deleteBasicSiteInfoBySiteIds(Long[] siteIds)
    {
        return basicSiteInfoMapper.deleteBasicSiteInfoBySiteIds(siteIds);
    }

    /**
     * 删除站点信息;信息
     * 
     * @param siteId 站点信息;主键
     * @return 结果
     */
    @Override
    public int deleteBasicSiteInfoBySiteId(Long siteId)
    {
        return basicSiteInfoMapper.deleteBasicSiteInfoBySiteId(siteId);
    }
}
